﻿// 界面管理
let UiMap: { [id: string]: () => UiFramework.IState } = {};
// 弹出对话框管理
let DialogMap: { [id: string]: () => UiFramework.DialogState } = {};
// 主 div
let divs: HTMLDivElement;
//Android消息管理器
let massageMgr: DataFramework.MessageMgr;
//忽略对windows对象的错误检查
declare let windows;
windows = window;

//启动
window.onload = () =>
{
    document.body.innerHTML = document.body.innerHTML.replace(/\ufeff/g, ''); // 解决 html 上面一行空白的问题
    divs = document.createElement("div");
    document.body.appendChild(divs);

    // 在这里添加 js 或 css 页面
    let json =
        [
            // 框架
            "framework/SmartEvent.js", // 事件
            "framework/UiMgr.js", // 管理器
            "framework/MassageMgr.js",//安卓方法和消息与js互调

            // 页面
            "page/LoginPage.js",  // 登录页面
            "page/EquipmentAuthority.js",  // 设备权限管理页面
            "page/AddEquipment.js", // 添加设备页面
            "page/EquipmentList.js", // 设备列表页面
            "page/Loading.js", // Loading等待页面
            "page/ConfigurationPage.js",  // APP 的初始配置页面
            "page/ConfigurationDetail.js",  // 配置详情页面
            "page/WifiSetPage.js",  // WIFI 配置页面

            // 透视浮动窗口
            "floatwindow/BedroomWindow.js", // 点击卧室跳至的悬浮窗
            "floatwindow/KitchenWindow.js", // 点击厨房跳至的悬浮窗
            "floatwindow/DrawingRoomWindow.js", // 点击客厅跳至的悬浮窗
            "floatwindow/ToiletWindow.js", // 点击卫生间跳至的悬浮窗
            "floatwindow/LampWindow.js", // 点击设备列表 灯更名下拉条 跳至的悬浮窗
            "floatwindow/PosiBedroomWindow.js", // 点击设备列表 位置卧室下拉条 跳至的悬浮窗
            "floatwindow/RelateExistEquipWindow.js", // 点击设备列表 关联已有设备 跳至的悬浮窗

            // 弹出对话框
            "dialog/AddHostFailureDialog.js", // 添加主机失败对话框
            "dialog/AddEquipFailureDialog.js", // 添加设备失败对话框
            "dialog/VerifyEquipLocationDialog.js", // 确认设备位置对话框
            "dialog/NotBindEquipDialog.js", // 没有绑定设备对话框
            "dialog/FinishEquipSetDialog.js", // 完成设备配置对话框
            "dialog/VerifyDeleEquipDialog.js", // 确认删除设备对话框
            "dialog/FinishHostSetDialog.js", // 主机配置完成对话框
            // 样式表
            "app.css"
        ];

    addJsOrCss(JSON.stringify(json))
};

// UI 状态机
let uimgr: UiFramework.StateMgr;

/**
 * 动态加载 js
 * @param json js 加载列表
 */
function addJsOrCss(json: string)
{

    let jsOrCss = JSON.parse(json);
    for (let i = 0; i < jsOrCss.length; i++)
        lighttool.JSLoader.instance().addImportScript(jsOrCss[i]);
    lighttool.JSLoader.instance().preload(JsOnLoad);

}

//Android数据返回
function androidMessage(json: string)
{
    if (massageMgr != null)
        massageMgr.messageReturn(json);
}
//Andaroid返回键触发
function Return()
{
    if (uimgr != null && uimgr.curState != null)
    {
        if (uimgr.UiPile.length == 1)
        {
            windows.callback.finish();
        } else
        {
            uimgr.curState.onEvent(UiFramework.SmartEvent.Return);
        }

    }
}

// js 文件加载完毕
function JsOnLoad()
{
    massageMgr = new DataFramework.MessageMgr();
    uimgr = new UiFramework.StateMgr();
    uimgr.div = divs;
    uimgr.changeStateByName("loginPage");

    // Java 端控制台打印
    let js2JavaLog: { [id: string]: string } = {};
    js2JavaLog["fromJs"] = "233";

    // js 端显示
    let jsShow = document.getElementById("aaaa"); //
    jsShow.innerHTML = "我是lalajs";

    let fromTsIdShow = massageMgr.callAndroid(DataFramework.AndriodObject.SOKET, js2JavaLog, dfadf);

    jsShow.innerHTML = massageMgr.call(fromTsIdShow);

    //let aaa: { [id: string]: string };
    //aaa["aa"] = "aa";
    //let tsid = massageMgr.callAndroid(DataFramework.AndriodObject.SOKET, aaa, dfadf);
    //let string = massageMgr.call(tsid);

    function dfadf(java2JsShow: string)
{
    jsShow.innerHTML = java2JsShow;
    }

}




